﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AmazonMODEL
{
    #region Music
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class Music
    {

        private MusicProductType productTypeField;

        /// <remarks/>
        public MusicProductType ProductType
        {
            get
            {
                return this.productTypeField;
            }
            set
            {
                this.productTypeField = value;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class MusicProductType
    {

        private object itemField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("MusicClassical", typeof(MusicClassical))]
        [System.Xml.Serialization.XmlElementAttribute("MusicPopular", typeof(MusicPopular))]
        public object Item
        {
            get
            {
                return this.itemField;
            }
            set
            {
                this.itemField = value;
            }
        }
    }

    #region MusicClassical
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class MusicClassical
    {

        private MusicMediaType mediaTypeField;

        private VinylRecordDetailsType vinylRecordDetailsField;

        private bool vinylRecordDetailsFieldSpecified;

        private MusicFormatType[] formatField;

        private AudioEncodingType audioEncodingField;

        private bool audioEncodingFieldSpecified;

        private string numberOfDiscsField;

        private string runTimeField;

        private string[] artistField;

        private string[] performerField;

        private string[] composerField;

        private string[] conductorField;

        private string[] orchestraField;

        private LanguageStringType languageField;

        private bool languageFieldSpecified;

        private System.DateTime originalPublicationDateField;

        private bool originalPublicationDateFieldSpecified;

        private System.DateTime publicationDateField;

        private bool publicationDateFieldSpecified;

        private string[] subjectKeywordsField;

        private bool isAdultProductField;

        private bool isAdultProductFieldSpecified;

        private string genreField;

        private string countryOfOriginField;

        /// <remarks/>
        public MusicMediaType MediaType
        {
            get
            {
                return this.mediaTypeField;
            }
            set
            {
                this.mediaTypeField = value;
            }
        }

        /// <remarks/>
        public VinylRecordDetailsType VinylRecordDetails
        {
            get
            {
                return this.vinylRecordDetailsField;
            }
            set
            {
                this.vinylRecordDetailsField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool VinylRecordDetailsSpecified
        {
            get
            {
                return this.vinylRecordDetailsFieldSpecified;
            }
            set
            {
                this.vinylRecordDetailsFieldSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Format")]
        public MusicFormatType[] Format
        {
            get
            {
                return this.formatField;
            }
            set
            {
                this.formatField = value;
            }
        }

        /// <remarks/>
        public AudioEncodingType AudioEncoding
        {
            get
            {
                return this.audioEncodingField;
            }
            set
            {
                this.audioEncodingField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool AudioEncodingSpecified
        {
            get
            {
                return this.audioEncodingFieldSpecified;
            }
            set
            {
                this.audioEncodingFieldSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "positiveInteger")]
        public string NumberOfDiscs
        {
            get
            {
                return this.numberOfDiscsField;
            }
            set
            {
                this.numberOfDiscsField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "positiveInteger")]
        public string RunTime
        {
            get
            {
                return this.runTimeField;
            }
            set
            {
                this.runTimeField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Artist", DataType = "normalizedString")]
        public string[] Artist
        {
            get
            {
                return this.artistField;
            }
            set
            {
                this.artistField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Performer", DataType = "normalizedString")]
        public string[] Performer
        {
            get
            {
                return this.performerField;
            }
            set
            {
                this.performerField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Composer", DataType = "normalizedString")]
        public string[] Composer
        {
            get
            {
                return this.composerField;
            }
            set
            {
                this.composerField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Conductor", DataType = "normalizedString")]
        public string[] Conductor
        {
            get
            {
                return this.conductorField;
            }
            set
            {
                this.conductorField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Orchestra", DataType = "normalizedString")]
        public string[] Orchestra
        {
            get
            {
                return this.orchestraField;
            }
            set
            {
                this.orchestraField = value;
            }
        }

        /// <remarks/>
        public LanguageStringType Language
        {
            get
            {
                return this.languageField;
            }
            set
            {
                this.languageField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool LanguageSpecified
        {
            get
            {
                return this.languageFieldSpecified;
            }
            set
            {
                this.languageFieldSpecified = value;
            }
        }

        /// <remarks/>
        public System.DateTime OriginalPublicationDate
        {
            get
            {
                return this.originalPublicationDateField;
            }
            set
            {
                this.originalPublicationDateField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool OriginalPublicationDateSpecified
        {
            get
            {
                return this.originalPublicationDateFieldSpecified;
            }
            set
            {
                this.originalPublicationDateFieldSpecified = value;
            }
        }

        /// <remarks/>
        public System.DateTime PublicationDate
        {
            get
            {
                return this.publicationDateField;
            }
            set
            {
                this.publicationDateField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool PublicationDateSpecified
        {
            get
            {
                return this.publicationDateFieldSpecified;
            }
            set
            {
                this.publicationDateFieldSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("SubjectKeywords")]
        public string[] SubjectKeywords
        {
            get
            {
                return this.subjectKeywordsField;
            }
            set
            {
                this.subjectKeywordsField = value;
            }
        }

        /// <remarks/>
        public bool IsAdultProduct
        {
            get
            {
                return this.isAdultProductField;
            }
            set
            {
                this.isAdultProductField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsAdultProductSpecified
        {
            get
            {
                return this.isAdultProductFieldSpecified;
            }
            set
            {
                this.isAdultProductFieldSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "normalizedString")]
        public string Genre
        {
            get
            {
                return this.genreField;
            }
            set
            {
                this.genreField = value;
            }
        }

        /// <remarks/>
        public string CountryOfOrigin
        {
            get
            {
                return this.countryOfOriginField;
            }
            set
            {
                this.countryOfOriginField = value;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    public enum MusicMediaType
    {

        /// <remarks/>
        lp_record,

        /// <remarks/>
        audioCD,

        /// <remarks/>
        cassette,

        /// <remarks/>
        dvd_audio,
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    public enum VinylRecordDetailsType
    {

        /// <remarks/>
        lp,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("12_single")]
        Item12_single,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("45")]
        Item45,

        /// <remarks/>
        ep,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("78")]
        Item78,

        /// <remarks/>
        other,

        /// <remarks/>
        unknown,
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    public enum MusicFormatType
    {

        /// <remarks/>
        authorized_bootleg,

        /// <remarks/>
        bsides,

        /// <remarks/>
        best_of,

        /// <remarks/>
        box_set,

        /// <remarks/>
        original_recording,

        /// <remarks/>
        reissued,

        /// <remarks/>
        remastered,

        /// <remarks/>
        soundtrack,

        /// <remarks/>
        special_edition,

        /// <remarks/>
        special_limited_edition,

        /// <remarks/>
        cast_recording,

        /// <remarks/>
        compilation,

        /// <remarks/>
        deluxe_edition,

        /// <remarks/>
        digital_sound,

        /// <remarks/>
        double_lp,

        /// <remarks/>
        explicit_lyrics,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("hi-fidelity")]
        hifidelity,

        /// <remarks/>
        import,

        /// <remarks/>
        limited_collectors_edition,

        /// <remarks/>
        limited_edition,

        /// <remarks/>
        remixes,

        /// <remarks/>
        live,

        /// <remarks/>
        extra_tracks,

        /// <remarks/>
        cutout,

        /// <remarks/>
        cd_and_dvd,

        /// <remarks/>
        dual_disc,

        /// <remarks/>
        hybrid_sacd,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("cd-single")]
        cdsingle,

        /// <remarks/>
        maxi_single,

        /// <remarks/>
        sacd,

        /// <remarks/>
        minidisc,

        /// <remarks/>
        uk_import,

        /// <remarks/>
        us_import,

        /// <remarks/>
        jp_import,

        /// <remarks/>
        enhanced,

        /// <remarks/>
        clean,

        /// <remarks/>
        copy_protected_cd,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("double_lp")]
        double_lp1,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("soundtrack")]
        soundtrack1,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("cd-single")]
        cdsingle1,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("remastered")]
        remastered1,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("box_set")]
        box_set1,

        /// <remarks/>
        double_cd,

        /// <remarks/>
        karaoke,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("limited_edition")]
        limited_edition1,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("maxi_single")]
        maxi_single1,

        /// <remarks/>
        mp3_audio,

        /// <remarks/>
        ringle,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("cd_and_dvd")]
        cd_and_dvd1,

        /// <remarks/>
        shm_cd,
    } 
    #endregion

    #region MusicPopular
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class MusicPopular
    {

        private MusicMediaType mediaTypeField;

        private VinylRecordDetailsType vinylRecordDetailsField;

        private bool vinylRecordDetailsFieldSpecified;

        private MusicFormatType[] formatField;

        private AudioEncodingType audioEncodingField;

        private bool audioEncodingFieldSpecified;

        private string numberOfDiscsField;

        private string runTimeField;

        private string[] artistField;

        private LanguageStringType languageField;

        private bool languageFieldSpecified;

        private System.DateTime originalPublicationDateField;

        private bool originalPublicationDateFieldSpecified;

        private System.DateTime publicationDateField;

        private bool publicationDateFieldSpecified;

        private string[] subjectKeywordsField;

        private bool isAdultProductField;

        private bool isAdultProductFieldSpecified;

        private string genreField;

        private string countryOfOriginField;

        /// <remarks/>
        public MusicMediaType MediaType
        {
            get
            {
                return this.mediaTypeField;
            }
            set
            {
                this.mediaTypeField = value;
            }
        }

        /// <remarks/>
        public VinylRecordDetailsType VinylRecordDetails
        {
            get
            {
                return this.vinylRecordDetailsField;
            }
            set
            {
                this.vinylRecordDetailsField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool VinylRecordDetailsSpecified
        {
            get
            {
                return this.vinylRecordDetailsFieldSpecified;
            }
            set
            {
                this.vinylRecordDetailsFieldSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Format")]
        public MusicFormatType[] Format
        {
            get
            {
                return this.formatField;
            }
            set
            {
                this.formatField = value;
            }
        }

        /// <remarks/>
        public AudioEncodingType AudioEncoding
        {
            get
            {
                return this.audioEncodingField;
            }
            set
            {
                this.audioEncodingField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool AudioEncodingSpecified
        {
            get
            {
                return this.audioEncodingFieldSpecified;
            }
            set
            {
                this.audioEncodingFieldSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "positiveInteger")]
        public string NumberOfDiscs
        {
            get
            {
                return this.numberOfDiscsField;
            }
            set
            {
                this.numberOfDiscsField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "positiveInteger")]
        public string RunTime
        {
            get
            {
                return this.runTimeField;
            }
            set
            {
                this.runTimeField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Artist", DataType = "normalizedString")]
        public string[] Artist
        {
            get
            {
                return this.artistField;
            }
            set
            {
                this.artistField = value;
            }
        }

        /// <remarks/>
        public LanguageStringType Language
        {
            get
            {
                return this.languageField;
            }
            set
            {
                this.languageField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool LanguageSpecified
        {
            get
            {
                return this.languageFieldSpecified;
            }
            set
            {
                this.languageFieldSpecified = value;
            }
        }

        /// <remarks/>
        public System.DateTime OriginalPublicationDate
        {
            get
            {
                return this.originalPublicationDateField;
            }
            set
            {
                this.originalPublicationDateField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool OriginalPublicationDateSpecified
        {
            get
            {
                return this.originalPublicationDateFieldSpecified;
            }
            set
            {
                this.originalPublicationDateFieldSpecified = value;
            }
        }

        /// <remarks/>
        public System.DateTime PublicationDate
        {
            get
            {
                return this.publicationDateField;
            }
            set
            {
                this.publicationDateField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool PublicationDateSpecified
        {
            get
            {
                return this.publicationDateFieldSpecified;
            }
            set
            {
                this.publicationDateFieldSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("SubjectKeywords")]
        public string[] SubjectKeywords
        {
            get
            {
                return this.subjectKeywordsField;
            }
            set
            {
                this.subjectKeywordsField = value;
            }
        }

        /// <remarks/>
        public bool IsAdultProduct
        {
            get
            {
                return this.isAdultProductField;
            }
            set
            {
                this.isAdultProductField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsAdultProductSpecified
        {
            get
            {
                return this.isAdultProductFieldSpecified;
            }
            set
            {
                this.isAdultProductFieldSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "normalizedString")]
        public string Genre
        {
            get
            {
                return this.genreField;
            }
            set
            {
                this.genreField = value;
            }
        }

        /// <remarks/>
        public string CountryOfOrigin
        {
            get
            {
                return this.countryOfOriginField;
            }
            set
            {
                this.countryOfOriginField = value;
            }
        }
    } 
    #endregion
    #endregion
}
